namespace ext.dd
{
	using System;
	using System.Runtime.CompilerServices;
	using System.Html;
	using System.Collections;
	
	
	/// <summary>
	/// A simple class that provides the basic implementation needed to make any element a drop target that can have
	/// draggable items dropped onto it. The drop has no effect until an implementation of notifyDrop is provided.
	/// </summary>
	/// <definedin>src\dd\DropTarget.js</definedin>
	[ScriptName("DropTarget")]
	[ScriptNamespace("Ext.dd")]
	[Imported()]
	public partial class DropTarget : ext.dd.DDTarget
	{
		
		#region Constructors
		/// <summary>Constructor</summary>
		/// <param name="el">The container element</param>
		/// <param name="config"></param>
		public DropTarget(object el, ext.dd.DropTarget_Configuration config)
		{
		}
		
		/// <summary>Constructor</summary>
		public DropTarget()
		{
		}
		#endregion
		
		#region Fields
		/// <summary>
		/// A named drag drop group to which this object belongs. If a group is specified, then this object will only
		/// interact with other drag drop objects in the same group (defaults to undefined).
		/// </summary>
		/// <definedin>src\dd\DropTarget.js</definedin>
		[ScriptName("ddGroup")]
		public string DdGroup;
		
		/// <summary>The CSS class applied to the drop target element while the drag source is over it (defaults to &quot;&quot;).</summary>
		/// <definedin>src\dd\DropTarget.js</definedin>
		[ScriptName("overClass")]
		public string OverClass;
		
		/// <summary>The CSS class returned to the drag source when drop is allowed (defaults to &quot;x-dd-drop-ok&quot;).</summary>
		/// <definedin>src\dd\DropTarget.js</definedin>
		[ScriptName("dropAllowed")]
		public string DropAllowed;
		
		/// <summary>The CSS class returned to the drag source when drop is not allowed (defaults to &quot;x-dd-drop-nodrop&quot;).</summary>
		/// <definedin>src\dd\DropTarget.js</definedin>
		[ScriptName("dropNotAllowed")]
		public string DropNotAllowed;
		#endregion
		
		#region Methods
		/// <summary>
		/// The function a {@link Ext.dd.DragSource} calls once to notify this drop target that the source is now over the
		/// target. This default implementation adds the CSS class specified by overClass (if any) to the drop element
		/// and returns the dropAllowed config value. This method should be overridden if drop validation is required.
		/// </summary>
		/// <definedin>src\dd\DropTarget.js</definedin>
		/// <param name="source">The drag source that was dragged over this drop target</param>
		/// <param name="e">The event</param>
		/// <param name="data">An object containing arbitrary data supplied by the drag source</param>
		/// <returns>
		/// status The CSS class that communicates the drop status back to the source so that the
		/// underlying {@link Ext.dd.StatusProxy} can be updated
		/// </returns>
		[ScriptName("notifyEnter")]
		public string NotifyEnter(ext.dd.DragSource source, System.Html.ElementEvent e, object data)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// The function a {@link Ext.dd.DragSource} calls continuously while it is being dragged over the target.
		/// This method will be called on every mouse movement while the drag source is over the drop target.
		/// This default implementation simply returns the dropAllowed config value.
		/// </summary>
		/// <definedin>src\dd\DropTarget.js</definedin>
		/// <param name="source">The drag source that was dragged over this drop target</param>
		/// <param name="e">The event</param>
		/// <param name="data">An object containing arbitrary data supplied by the drag source</param>
		/// <returns>
		/// status The CSS class that communicates the drop status back to the source so that the
		/// underlying {@link Ext.dd.StatusProxy} can be updated
		/// </returns>
		[ScriptName("notifyOver")]
		public string NotifyOver(ext.dd.DragSource source, System.Html.ElementEvent e, object data)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// The function a {@link Ext.dd.DragSource} calls once to notify this drop target that the source has been dragged
		/// out of the target without dropping. This default implementation simply removes the CSS class specified by
		/// overClass (if any) from the drop element.
		/// </summary>
		/// <definedin>src\dd\DropTarget.js</definedin>
		/// <param name="source">The drag source that was dragged over this drop target</param>
		/// <param name="e">The event</param>
		/// <param name="data">An object containing arbitrary data supplied by the drag source</param>
		[ScriptName("notifyOut")]
		public void NotifyOut(ext.dd.DragSource source, System.Html.ElementEvent e, object data)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// The function a {@link Ext.dd.DragSource} calls once to notify this drop target that the dragged item has
		/// been dropped on it. This method has no default implementation and returns false, so you must provide an
		/// implementation that does something to process the drop event and returns true so that the drag source&apos;s
		/// repair action does not run.
		/// </summary>
		/// <definedin>src\dd\DropTarget.js</definedin>
		/// <param name="source">The drag source that was dragged over this drop target</param>
		/// <param name="e">The event</param>
		/// <param name="data">An object containing arbitrary data supplied by the drag source</param>
		/// <returns>True if the drop was valid, else false</returns>
		[ScriptName("notifyDrop")]
		public bool NotifyDrop(ext.dd.DragSource source, System.Html.ElementEvent e, object data)
		{
			throw new System.Exception("Imported - not implemented");
		}
		#endregion
	}
}
